﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Liquidaciones.Repositories;
using Liquidaciones.Models;
using System.Web.Security;

namespace Liquidaciones.Controllers
{
    public class LiquidacionController : Controller
    {
        LiquidacionRepository liquidacionRepository = new LiquidacionRepository();
        //
        // GET: /Liquidacion/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Ver(int id, Guid idEmpleado)
        {
            EmpleadoRepository empleadoRepository = new EmpleadoRepository();
            ViewBag.empleado = empleadoRepository.Get(idEmpleado);
            ViewBag.liquidacion = liquidacionRepository.Get(id);
            return View();
        }

        public ActionResult CrearLiquidacion(Guid id)
        {
            EmpleadoRepository empleadoRepository = new EmpleadoRepository();
            LiquidadorRepository liquidadorRepository = new LiquidadorRepository();
            Guid idLiquidador = (Guid)Membership.GetUser().ProviderUserKey;
            double basico = double.Parse(Request["basico"]);
            int dias = int.Parse(Request["dias"]);

            Empleado empleado = empleadoRepository.Get(id);
            double parcial = (basico / 24) * dias;
            double jubilacion = parcial * 0.11;
            double social = parcial * 0.03;
            double afjp = parcial * 0.03;
            double categoria;
            switch (empleado.Categoria)
            { 
                case "Junior":
                    categoria = parcial * 0.03;
                    break;
                case "SemiSenior":
                    categoria = parcial * 0.06;
                    break;
                case "Senior":
                    categoria = parcial * 0.1;
                    break;
                default:
                    categoria = 0;
                    break;
            }

            double noRemunerativo = jubilacion + social + afjp;
            double remunerativo = parcial + categoria;
            double total = remunerativo - noRemunerativo;

            Liquidador liquidador = liquidadorRepository.Get(idLiquidador);
            Liquidacion liquidacion = new Liquidacion(liquidador, empleado, parcial, total, social, afjp, jubilacion, categoria);

            empleado.MisLiquidaciones.Add(liquidacion);
            empleado.Liquidado = true;
            liquidacionRepository.Create(liquidacion);
            empleadoRepository.Save();            

            return Redirect(Url.Action("Index", "Liquidador"));
        }
    }
}
